
namespace SharpTalk.Core
{
    using System;
    using System.Runtime.Serialization;
    using Base;
    using Enums;
    using Services;
    /// <summary>
    /// Default public chatroom
    /// </summary>
    [DataContract]
    [Serializable]
    internal sealed class DefaultChatRoom : ChatRoomBase
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="T:SharpTalk.Core.DefaultChatRoom"/> class.
        /// </summary>
        internal DefaultChatRoom()
            : this(Guid.Empty)
        {
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:SharpTalk.Core.DefaultChatRoom"/> class.
        /// </summary>
        private DefaultChatRoom(Guid guid)
            :base(guid)
        {
        }
        /// <summary>
        /// Obtains the name of the chatroom
        /// </summary>
        [DataMember]
        public override string Name
        {
            get { return Resources.Messages.chatroom_name_public; }
            set { }
        }
        /// <summary>
        /// Obtains the image
        /// </summary>
        [DataMember]
        public override byte[] Image
        {
            get { return null; }
            set { }
        }
        /// <summary>
        /// Obtain the password hash. Allways returns null.
        /// </summary>
        [DataMember]
        public override byte[] PasswordHash
        {
            get { return null; }
            set { }
        }
        /// <summary>
        /// Obtains the chatroom type. Allways returns ChatRoomTypeEnum.Public.
        /// </summary>
        [DataMember]
        public override ChatRoomTypeEnum Type
        {
            get { return ChatRoomTypeEnum.Public; }
            set { }
        }
        /// <summary>
        /// Determines if the instance is the default public chatroom. Allways returns True.
        /// </summary>
        [DataMember]
        public override bool IsDefault
        {
            get { return true; }
            set {}
        }
        /// <summary>
        /// Obtains the owner. Allways returns SystemUser.
        /// </summary>
        [DataMember]
        public override Guid Owner
        {
            get { return UserService.SystemUser.Guid; }
            set { }
        }
    }
}